package org.imlinker.login;

/**
 * 密码掩饰码。开源软件没法做到安全的密码转换。
 * 
 * 在尽量依靠操作系统对用户文件的安全限 制来保护帐号的基础上。 对明文保存的密码进行一些掩饰。
 * 
 */

public final class PasswordMask extends Object {
	/**
	 * 密码掩饰码。
	 */
	private static String mask = "asdfghjklpominubyvtcrxewzqQASW"
			+ "EDFRVCZTGBXNHYUJKIOPLM0123498765#";

	/**
	 * 从一个掩饰码中转换得到真正的密码。
	 * 
	 * @param code
	 *            掩饰码
	 * @return 可用的密码
	 */
	public static String getPassword(final String code) {
		char[] codes = code.toCharArray();

		for (int i = 0; i < codes.length; i++) {
			codes[i] = mask.charAt(mask.indexOf(codes[i]) - 1);
		}
		return new String(codes);
	}

	/**
	 * 把密码转换到掩饰码。
	 * 
	 * @param password
	 *            需要转化的密码
	 * @return 转换后的掩饰码
	 */
	public static String setPassword(final String password) {
		char[] codes = password.toCharArray();

		for (int i = 0; i < codes.length; i++) {
			codes[i] = mask.charAt(mask.indexOf(codes[i]) + 1);
		}
		return new String(codes);
	}
}
